package com.clear.template;

public class Main {
    public static void main(String[] args) {
        AbstractTemplate templateA = new ConcreteTemplateA();
        AbstractTemplate templateB = new ConcreteTemplateB();
        // 调用模板方法，具体的步骤可以是子类的实现，也可能是模板中的实现
        System.out.println("Using Template A:");
        templateA.templateMethod();

        System.out.println("\nUsing Template B:");
        templateB.templateMethod();

        // 匿名内部类
        AbstractTemplate templateC = new AbstractTemplate() {
            @Override
            protected void step2() {
                System.out.println("Step 2 (C): Cook the dish using method C.");
            }
        };
        System.out.println("\nUsing Template C:");
        templateC.templateMethod();
    }
}
